package com.atao.example.lambda02;

import java.util.Comparator;
import java.util.TreeSet;

/**
 * @author 阿涛
 * @date 2021-03-06
 */
public class Test {

    private static Comparator<Integer> comparator() {
        return new Comparator<Integer>() {
            @Override
            public int compare(Integer o1, Integer o2) {
                return Integer.compare(o1, o2);
            }
        };
    }

    private static Comparator<Integer> comparator1() {
        return (Integer o1, Integer o2) -> o2.compareTo(o1);
    }

    public static void main(String[] args) {
        //todo 匿名内部类
        Comparator<Integer> cpt = comparator();
        TreeSet<Integer> set = new TreeSet<>(cpt);
        set.add(1);
        set.add(3);
        set.add(2);
        set.add(100);
        System.out.println(set);
        System.out.println("=============================");

        //todo 使用lambda表达式
        Comparator<Integer> cpt2 = comparator1();
        TreeSet<Integer> set2 = new TreeSet<>(cpt2);
        set2.add(1);
        set2.add(3);
        set2.add(2);
        set2.add(100);
        System.out.println(set2);

        //todo 类型检查、类型推断
        //todo 无类型推断
        Comparator<Integer> cpt3 = (Integer o1, Integer o2) -> o2.compareTo(o1);
        //todo 有类型推断
        Comparator<Integer> cpt4 = ((o1, o2) -> o2.compareTo(o1));
    }

}
